/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mx.itsc.dswII.view;

import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
import mx.its.dswII.biblioteca.bl.AutorBlLocal;
import mx.its.dswII.biblioteca.bl.CategoriaBlLocal;
import mx.its.dswII.biblioteca.bl.LibroBLLocal;
import mx.its.dswII.biblioteca.modelo.Autor;
import mx.its.dswII.biblioteca.modelo.Categoria;
import mx.its.dswII.biblioteca.modelo.Libro;

/**
 *
 * @author Lenovo-user
 */
@ManagedBean
@SessionScoped
public class BookBean {

    @EJB
    private CategoriaBlLocal categoriaBl;
    @EJB
    private AutorBlLocal autorBl;
    @EJB
    private LibroBLLocal libroBL;
    private List<Libro> listBooks;
    private List<Autor> listAuthor;
    private List<Categoria> listCategory;
    private Libro book;
    private Categoria category;
   private int idAuthor;
    private int authorSeleccionado;
    private int categoriaSeleccionado;
    private int idCategoria;
    private String accion="";
    private String link="";
    ///
    ///
    ///
    

    public CategoriaBlLocal getCategoriaBl() {
        return categoriaBl;
    }

    public void setCategoriaBl(CategoriaBlLocal categoriaBl) {
        this.categoriaBl = categoriaBl;
    }

    public int getCategoriaSeleccionado() {
        return categoriaSeleccionado;
    }

    public void setCategoriaSeleccionado(int categoriaSeleccionado) {
        this.categoriaSeleccionado = categoriaSeleccionado;
    }
    
    ////////////
    
    public int getAuthorSeleccionado() {
        return authorSeleccionado;
    }

    public void setAuthorSeleccionado(int authorSeleccionado) {
        this.authorSeleccionado = authorSeleccionado;
    }
    
    /**
     * Creates a new instance of BookBean
     */
    public BookBean() {
        book=new Libro();
    }

    public Libro getBook() {
        return book;
    }

    public void setBook(Libro book) {
        this.book = book;
    }

    public int getIdAuthor() {
        return idAuthor;
    }

    public void setIdAuthor(int idAuthor) {
        this.idAuthor = idAuthor;
    }

    public int getIdCategoria() {
        return idCategoria;
    }

    public void setIdCategoria(int idCategoria) {
        this.idCategoria = idCategoria;
    }

    public Categoria getCategory() {
        return category;
    }

    public void setCategory(Categoria category) {
        this.category = category;
    }
    
    

    public List<Libro> getListBooks() {
        listBooks=libroBL.getAll();
        return listBooks;
    }

    public List<Autor> getListAuthor() {
        listAuthor=autorBl.getAll();
        return listAuthor;
    }

    public List<Categoria> getListCategory() {
//       listCategory=categoriaBl.getAll();
        return listCategory;
    }
    
    

   public void prepararNuevo(ActionEvent evt){//booklist
       accion="Nuevo";
       listCategory=new ArrayList<Categoria>();
       book=new Libro();
   }
   
   public void prepararEditar(ActionEvent evt){//booklist
       accion="Editar";
//       int index=Integer.parseInt(evt.getComponent().getClientId().split(":")[2]);
//       book=listBooks.get(index);
       listCategory=categoriaBl.getListByBook(book);
//           System.out.println("libro "+book.getId()+" listadecategoriasdelibros "+book.getCategoriaDeLibroList());
   }
   
   
   public void prepararEliminar(ActionEvent evt){
       accion="Eliminar";
       int index=Integer.parseInt(evt.getComponent().getClientId().split(":")[2]);
       book=listBooks.get(index); 
//       listCategory=categoriaBl.getListByBook(book);
   }
   
   public void eliminarCategoriaDeLista(ActionEvent evt){//createedit
//      accion="Eliminar2";
               int index=Integer.parseInt(evt.getComponent().getClientId().split(":")[2]);
//       category=listCategory.get(index);  
       listCategory.remove(index);
       
   }
   
   public void agregarCategoria(ActionEvent evt){//create edit
//       if(!listCategory.contains(categoriaBl.findById(idCategoria))){
       listCategory.add(categoriaBl.findById(idCategoria));
//       }else{
           
//       }
   }
   
   public String procesarAccion(){//bookconfirmar
       if(accion.equalsIgnoreCase("Nuevo")){
           libroBL.register(book,listCategory);
       }else{
           if(accion.equalsIgnoreCase("Editar")){
//              // System.out.println("libro ca "+book.getCategoriaDeLibroList()+"lista "+listCategory);
                        libroBL.modify(book,listCategory);
           }else{
               if(accion.equalsIgnoreCase("Eliminar")){
                   System.out.println("entre eliminar");
                   libroBL.remove(book);
               }
           }
       }
       accion="";
       return "LibroLista";
   }
    
   public String llamadaCancelarConfirmar(){//bookconfirmar
       
       if(accion.equalsIgnoreCase("Editar")||accion.equalsIgnoreCase("Nuevo")
               ){
           link="LibroCrearEditar";
           
       }else{
           if(accion.equalsIgnoreCase("Eliminar")){
               link="LibroLista";
           }
       }
      return link;
   }
   
   public String accionAceptar(){
       book.setIdAutor(autorBl.findById(authorSeleccionado));
       return "LibroConfirm";
   }
    
   public String irPagina(){
       return "LibroLista.xhml";
   }
}
